package ua.com.stormlabs.tiny.licenseserver.utils;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author Maxim Bondarenko
 * @version 1.0 Jul 8, 2010
 */

public final class ArgumentGuard {

    private static final Logger log = LoggerFactory.getLogger(ArgumentGuard.class);

    private ArgumentGuard() {

    }

    public static void checkNotNull(Object arg, String argName) throws IllegalArgumentException {
        if (arg == null) {
            String msg = "Argument '" + argName + "' cannot be null!";
            log.error(msg);
            throw new NullPointerException(msg);
        }
    }

    /**
     * Checks that arg greater then zero
     *
     * @param arg     argument to check
     * @param argName argument name
     * @throws IllegalArgumentException if argument less or equal zero
     */
    public static void checkPositiveInteger(int arg, String argName) throws IllegalArgumentException {
        if (arg <= 0) {
            String msg = "Argument '" + argName + "' must be positive";
            log.error(msg);
            throw new IllegalArgumentException(msg);
        }
    }

    /**
     * Checks that arg greater or equals zero
     *
     * @param arg     argument to check
     * @param argName argument name
     * @throws IllegalArgumentException if argument less then zero
     */
    public static void checkNotNegativeInteger(int arg, String argName) throws IllegalArgumentException {
        if (arg < 0) {
            String msg = "Argument '" + argName + "' cannot be negative";
            log.error(msg);
            throw new IllegalArgumentException(msg);
        }
    }

    public static void checkNotNegativeLong(long arg, String argName) throws IllegalArgumentException {
        if (arg < 0) {
            String msg = "Argument '" + argName + "' cannot be negative";
            log.error(msg);
            throw new IllegalArgumentException(msg);
        }
    }

    public static void checkPositiveLong(long arg, String argName) throws IllegalArgumentException {
        if (arg <= 0) {
            String msg = "Argument '" + argName + "' must be positive";
            log.error(msg);
            throw new IllegalArgumentException(msg);
        }
    }

    public static void checkNotBlank(String arg, String argName) throws IllegalArgumentException {
        if (arg.isEmpty()) {
            String msg = "Argument '" + argName + "' cannot be blank";
            log.error(msg);
            throw new IllegalArgumentException(msg);
        }
    }
}
